package com.foftact.etfhist;

import java.util.Date;
import java.util.List;

/**
 * ETF历史净值服务接口
 * 定义ETF历史净值相关的业务方法
 */
public interface ETFHistoryService {
    /**
     * 抓取并保存指定基金代码的历史净值数据
     * @param fundCode 基金代码
     * @return 成功保存的记录数
     */
    int fetchAndSaveETFHistoryData(String fundCode);

    /**
     * 根据基金代码和净值日期查询ETF历史净值数据
     * @param fundCode 基金代码
     * @param navDate 净值日期
     * @return ETF历史净值数据对象
     */
    ETFHistory getETFHistoryByFundCodeAndDate(String fundCode, Date navDate);

    /**
     * 根据基金代码和日期范围查询ETF历史净值数据
     * @param fundCode 基金代码
     * @param startDate 开始日期
     * @param endDate 结束日期
     * @return ETF历史净值数据列表
     */
    List<ETFHistory> getETFHistoryByFundCodeAndDateRange(String fundCode, Date startDate, Date endDate);

    /**
     * 保存单个ETF历史净值数据
     * @param etfHistory ETF历史净值数据对象
     * @return 保存是否成功
     */
    boolean saveETFHistory(ETFHistory etfHistory);

    /**
     * 批量保存ETF历史净值数据
     * @param etfHistoryList ETF历史净值数据列表
     * @return 保存的记录数
     */
    int batchSaveETFHistory(List<ETFHistory> etfHistoryList);

    /**
     * 更新ETF历史净值数据
     * @param etfHistory ETF历史净值数据对象
     * @return 更新是否成功
     */
    boolean updateETFHistory(ETFHistory etfHistory);

    /**
     * 根据基金代码和净值日期删除ETF历史净值数据
     * @param fundCode 基金代码
     * @param navDate 净值日期
     * @return 删除是否成功
     */
    boolean deleteETFHistoryByFundCodeAndDate(String fundCode, Date navDate);

    /**
     * 根据基金代码删除所有ETF历史净值数据
     * @param fundCode 基金代码
     * @return 删除是否成功
     */
    boolean deleteAllETFHistoryByFundCode(String fundCode);

    /**
     * 清空ETF历史净值表
     * @return 操作是否成功
     */
    boolean clearETFHistory();
}